package org.example.controller;

import org.example.service.api.UserServiceApi;
import org.example.service.impl.UserService;
import org.example.util.JSONResult;
import org.example.util.JSONStats;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 用户信息访问控制
 */

@Controller
@CrossOrigin //解决同源禁止策略
@ResponseBody
public class UsersTbController {

    //调用用户服务层
    @Autowired
    UserServiceApi userService;

    /**
     * 该方法用于注册用户信息
     *
     * @param username     用户名
     * @param userPassword 用户密码
     * @param userSex      用户性别
     * @param userXh       用户学号
     * @param userPhone    用户电话
     * @return 返回查询结果
     */
    @GetMapping("/regist")
    @ResponseBody
    public JSONResult userRegist(String username, String userPassword, String userSex, String userXh, String userPhone) {
        JSONResult jsonResult = userService.userRegist(username, userPassword, userSex, userXh, userPhone);

        return jsonResult;
    }

    /**
     * 检查用户名是否被占用
     *
     * @param username 用户名是否被占用
     * @return JsonResult 书数据
     */

    @GetMapping("/checkUsername")
    public JSONResult checkUserName(String username) {
        JSONResult jsonResult = userService.checkUserName(username);
        return jsonResult;
    }

    /**
     * y用户登录功能
     *
     * @param username     用户名
     * @param userpassword 用户密码
     * @return jsonResult
     */
    @GetMapping("/login")
    public JSONResult login(String username, String userpassword) {
        //调用登录服务

        JSONResult jsonResult = userService.userLogin(username, userpassword);
        return jsonResult;
    }

    /**
     * 用户信息修改
     *
     * @param userName  用户名
     * @param userphone 用户电话
     * @param userxh    用户学号
     * @param usersex   用户性别
     * @return JsonResult
     */
    @GetMapping("/alterUser")
    public JSONResult alterUserInfo(String userName, String userphone, String userxh, String usersex) {
        JSONResult jsonResult = userService.alterUserInfo(userName, userphone, userxh, usersex);
        return jsonResult;
    }

    /**
     * 修改用户密码
     *
     * @param username     用户名
     * @param userpassword 用户密码
     * @return 返回jsonResult
     */
    @GetMapping("/alterUserPwd")
    public JSONResult alterUserPwd(String username, String userpassword) {

        if (username != null && userpassword != null) {
            //密码判断 //用户名的判断
            JSONResult jsonResult = userService.alterUserPwd(username, userpassword);
            return jsonResult;
        } else {
            JSONResult jsonResult = new JSONResult();
            jsonResult.setMessage(JSONStats.ALTER_USER_PWD_ERROR.getMessage());
            jsonResult.setStatusCode(JSONStats.ALTER_USER_PWD_ERROR.getStatusCode());
            return jsonResult;
        }


    }

    /**
     * 检查旧密码是否正确
     *
     * @param username     用户名
     * @param userpassword 用户密码
     * @return
     */
    @GetMapping("/checkOldPwd")
    public JSONResult checkUserOldPwd(String username, String userpassword) {
        if (username != null || username != "") {
            //账号和密码不为空才去调用service
            JSONResult jsonResult = userService.checkUserPwd(username, userpassword);
            return jsonResult;

        } else {
            //判断错误
            JSONResult jsonResult = new JSONResult();
            jsonResult.setData(JSONStats.USER_ERROR.getMessage());
            jsonResult.setStatusCode(JSONStats.USER_ERROR.getStatusCode());
            return jsonResult;
        }

    }

    /**
     * 通过用户名查询用户信息
     * @param username
     * @return
     */
    @GetMapping("/adminQueryUserInfo")
    public JSONResult adminQueryUserInfo(String username){
        JSONResult jsonResult=userService.adminQueryUserInfoByUserName(username);

        return jsonResult;
    }

    /**
     * 修改用户信息
     * @param userName 用户ing
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userStatus 用户身份状态 1管理源 0 普通用户
     * @param userPhone 用户电话
     * @return
     */
    @GetMapping("/adminAlterUserInfo")
    public JSONResult adminAlterUserInfo(String userName,String userPassword,String userSex,String userXh,String userStatus,String userPhone){
        JSONResult jsonResult=userService.adminAlterUserInfo(userName, userPassword, userSex, userXh, userStatus, userPhone);
        return  jsonResult;

    }

    /**
     * 管理员添加用户信息
     * @param username 用户名
     * @param userPassword 用户密码
     * @param userSex 用户性别
     * @param userXh 用户学号
     * @param userPhone 用户电话
     * @param userStatus 用户身份状态 1管理员 0普通用户
     * @return
     */

    @GetMapping("/adminAddUser")
    public JSONResult adminAddUser(String username,String userPassword,String userSex,String userXh,String userPhone,String userStatus){
        JSONResult jsonResult=userService.adminAddUserInfo(username,userPhone,userStatus,userXh,userSex,userPassword);

        return jsonResult;

    }

    @GetMapping("/adminDeleteUserInfoByUserId")
    public JSONResult adminDeleteUserInfoByUserId(Integer userId){
        JSONResult jsonResult=userService.adminDeleteUserInfoByUserId(userId);
        return jsonResult;

    }
    @GetMapping("/adminDeleteUserInfoByUserName")
    public JSONResult adminDeleteUserInfoByUserName(String userName){
        JSONResult jsonResult=userService.adminDeleteUserInfoByUserName(userName);
        return jsonResult;
    }
}
